home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / HyperCard / Shifting Priorities / cards.xml < prev    next >
Text File  |  1994-05-01  |  12KB  |  54 lines

  1. card_2988.xml
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <!DOCTYPE card PUBLIC "-//Apple, Inc.//DTD card V 2.0//EN" "" >
  4. <card>
  5.     <id>2988</id>
  6.     <filler1>0</filler1>
  7.     <cantDelete> <false /> </cantDelete>
  8.     <showPict> <true /> </showPict>
  9.     <dontSearch> <false /> </dontSearch>
  10.     <owner>2679</owner>
  11.     <link rel="stylesheet" type="text/css" href="stylesheet_3109.css" />
  12.     <part>
  13.         <id>1</id>
  14.         <type>field</type>
  15.         <visible> <true /> </visible>
  16.         <dontWrap> <true /> </dontWrap>
  17.         <dontSearch> <false /> </dontSearch>
  18.         <sharedText> <false /> </sharedText>
  19.         <fixedLineHeight> <false /> </fixedLineHeight>
  20.         <autoTab> <false /> </autoTab>
  21.         <lockText> <true /> </lockText>
  22.         <rect>
  23.             <left>27</left>
  24.             <top>28</top>
  25.             <right>484</right>
  26.             <bottom>324</bottom>
  27.         </rect>
  28.         <style>scrolling</style>
  29.         <autoSelect> <false /> </autoSelect>
  30.         <showLines> <false /> </showLines>
  31.         <wideMargins> <false /> </wideMargins>
  32.         <multipleLines> <false /> </multipleLines>
  33.         <reservedFamily> 0 </reservedFamily>
  34.         <titleWidth>0</titleWidth>
  35.         <icon>0</icon>
  36.         <textAlign>left</textAlign>
  37.         <font>Palatino</font>
  38.         <textSize>10</textSize>
  39.         <textStyle>plain</textStyle>
  40.         <textHeight>13</textHeight>
  41.         <name>Priorities</name>
  42.         <script>--                       ShiftingPriorities---- A self-contained field script to easily rearrange lines in fields:----     Shift-click near any corner to resize.--     Shift-click near the center to relocate.--     Option-click to change text size.--     Command-click to modify text attributes.--     Click and hold on a line to select and move it.--     Single-click to open the field for editing.---- This field must have its textLock and dontWrap properties set,-- and must be a scrolling field. Simple clone-and-go feature.---- ¬© 1992 Douglas Parker & Maccyx. All rights reserved.---- This script may be circulated freely, provided these comments-- remain unaltered.------------------------------------------------------------------------on mouseDownif the optionKey is down thenput "*" into it -- a dummy valuerepeat until it is a number or theResult is "Cancel"ask "Change the text to which point size?" with the textSize of meput the result into theResultput it into theIt-- make sure it's a valid responseif it is a number and it is not empty and theResult is not "Cancel" thenset the textSize of me to itelse if theResult is not "Cancel" thenbeepanswer "That is not a number" with "OK"-- put the result into itend ifend repeatelse if the shiftKey is down then-- we're going to move or rearrange things hereput item one of the mouseLoc into xMouseput item two of the mouseLoc into yMouseput item one of the loc of me into xFieldput item two of the loc of me into yField-- divide the field into a 3x3 matrix, then test for-- the mouse being in the center region.if (abs(xField - xMouse) < the width of me/6) and ¬¨(abs(yField - yMouse) < the width of me/6) thenrepeat until the mouse is upset the loc of me to the mouseLoc -- move me aroundend repeatelseput the width of me into myWidthput the height of me into myHeight-- similarly, divide the field into a 6x6 matrix. If the-- mouse is down inside the corner 1/36th area, then resize-- Hmm, now why did he choose 1/36th?if (abs(xField - xMouse) > myWidth/2 - myWidth/6) and ¬¨(abs(yField - yMouse) > myHeight/2 - myHeight/6) thenput the rect of me into theOriginalRectrepeat until the mouse is up -- resize me by the cornersif item 1 of the mouseLoc > item 1 of the loc of me and ¬¨item 2 of the mouseLoc < item 2 of the loc of me then-- quadrant 1 top rightrepeat until the mouse is upput the rect of me into newRectput item one of the mouseLoc into item 3 of newRectput item two of the mouseLoc into item 2 of newRectset the rect of me to newRectend repeatelse if item 1 of the mouseLoc < item 1 of the loc of me and ¬¨item 2 of the mouseLoc < item 2 of the loc of me then--quadrant 2 top leftrepeat until the mouse is upput the rect of me into newRectput item one of the mouseLoc into item 1 of newRectput item two of the mouseLoc into item 2 of newRectset the rect of me to newRectend repeatelse if item 1 of the mouseLoc < item 1 of the loc of me and ¬¨item 2 of the mouseLoc > item 2 of the loc of me then-- quadrant 3 bottom leftrepeat until the mouse is upput the rect of me into newRectput item one of the mouseLoc into item 1 of newRectput item two of the mouseLoc into item 4 of newRectset the rect of me to newRectend repeatelse-- quadrant 4 bottom rightrepeat until the mouse is upput the rect of me into newRectput item one of the mouseLoc into item 3 of newRectput item two of the mouseLoc into item 4 of newRectset the rect of me to newRectend repeatend ifend repeat-- but you can't make it too small...if the height of me ‚⧠30 or the width of me ‚⧠60 thenbeepset the rect of me to theOriginalRectend ifend ifend ifelse if the commandKey is down then-- bring up the text attribute dialog box...lock Screenset cursor to watchput the userlevel into theUserlevelset the userlevel to 5choose field toolclick at the loc of metype "t" with commandKeyset the userlevel to theUserlevelchoose browse toolunlock Screenset cursor to handelseglobal lastTickput the ticks into lastTickend ifpass mouseDownend mouseDownon mouseStillDownglobal lastMSD, lastTickput the ticks into thisMSDput word 2 of the clickLine into theClickLineput the number of lines of me into theLineCount-- The mouse*Up* handler for this field uses a "click at" command.-- Side effects of the click at command include a "mouseDown",-- ten "mouseStillDown"s, and "mouseUp" system messages to be-- issued--as if the mouse is being clicked very slowly. These-- unwanted mouseStillDowns are intercepted, but discarded by-- setting the value of N on the line--            if thisMSD - lastMSD ‚â• N then-- to some value shorter than the repeating execution time-- of the user's mouseStillDown script, yet large enough that-- the unwanted mouseStillDowns are filtered out.---- The line also prevents execution of the remaining part of the-- handler if the user clicks in white space beyond the last line.if (thisMSD - lastMSD ‚â• 60) and (theClickLine ‚⧠theLineCount) thenput the ticks into lastMSD -- for next timeput line word two of the clickLine of me into holdLine -- preprocessingput the scroll of me into theScroll -- I'm going to lose the scroll soon-- this section calculates the lineHeight in pixels, not points,-- and sets some constants to speed up the repeat looplock Screen -- don't want 'em to see the fields shifting...put the top of me into theTopOfMe -- preprocessingif the wideMargins of me then -- evaluates to if true thenput 4 into marginWidth -- all textHeights use a wide margin of 4elseput 0 into marginWidthend ifselect char 1 to 0 of line 1 of me -- this can modify the scrollput item 2 of the selectedLoc - theTopOfMe - marginWidth - 1 into ¬¨thePixelHeight -- all to find out the pixel height per line.--             -- It can vary.select empty -- hide the text cursor-- this resets the original scroll in case the select line changed itset scroll of me to theScrollunlock Screen-- making theDragLine equal to theClickLine won't move it-- the first time through the repeatput min(theLineCount,theClickLine) into theDragLine -- theDragLine needs a valueput (the top of me + marginWidth + 1) into theFactor -- preprocessing-- If the mouse is held down just long enough to enter this hander-- AND just long enough to go through the repeat loop once, there-- may be too much time between the user's lastTick from the-- mouseDown and the execution of the mouseUp handler to place the-- I-beam when that is the intention. This next-- line is here *just in case* this happens. It also smooths out-- the execution of the I-beam insertion in the field.put the ticks into lastTick-- This next two lines can be moved inside the repeat loop.-- If they are moved inside the repeat, the cursor won't change-- until the text is *really* ready to move as the user holds-- the mouse down. One side effect of this will be a flashing-- cursor as the set cursor command is repeatedly executed.-- If-then-elses could be used to assure one-shot operation,-- but would slow down the loop speed. NB: The loop has to be-- optimized for speed to make the screen moves follow the-- mouse closely.set cursor to arrow -- prepare to moveset the textStyle of line word two of the clickLine of me to boldrepeat while the mouse is downwait for 5 ticks -- keep from selecting adjacent lines every time-- this follows the mouse around the screen, calculating line numbersput trunc((item two of the mouseLoc + theScroll - theFactor)/ ¬¨(thePixelHeight)) + 1 into theDragLineput max(1,min(theLineCount,theDragLine)) into theDragLineif theClickLine ‚↠theDragLine and theClickLine ‚⧠theLineCount then-- theClickLine is the destination-- theDragLine is the sourcelock Screen -- make it pretty!delete line theClickLine of meput holdLine & return before line theDragLine of me-- Beyon the top or bottom? Scroll the field appropriately.if item 2 of the mouseLoc ‚â• the bottom of me thenput theScroll + thePixelHeight into theScrollelse if item 2 of the mouseLoc ‚⧠the top of me thenput theScroll - thePixelHeight into theScrollend ifset scroll of me to theScrollset the textStyle of line theDragLine of me to bold-- use a visual effect in the next line to give-- a different feel & look.unlock Screen -- with dissolve -- aah! that feels better...end ifput theDragLine into theClickLineend repeatset the textStyle of line theClickLine of me to plainend ifpass mouseStillDownend mouseStillDownon closeField-- Get rid of unnecessary null lines at the end of the field.-- The user can't see them and usually creates plenty of them-- as they click once within the white space at the end of the-- field.repeat while the last line of me is empty and ¬¨the number of lines of me ‚â• 1delete the last line of meend repeatset the lockText of me to truepass closeFieldend closeFieldon exitField-- Get rid of unnecessary null lines at the end of the field.-- The user can't see them and usually creates plenty of them-- as they click once within the white space at the end of the-- field.repeat while the last line of me is empty and ¬¨the number of lines of me ‚â• 1delete the last line of meend repeatset the lockText of me to truesend "closeField" to mepass exitFieldend exitFieldon mouseUpglobal lastTick-- Your value may vary. 45 ticks works for an SE/30. The-- difference measures the time between the mouseDown and-- this mouseUp, --or-- between the first iteration of the-- mouseStillDown repeat loop and this mouseUp.-- Too many single clicks make the I-beam appear? Decrease the value.-- Not enough single clicks bring the I-beam? Increase the value.if (the ticks - lastTick ‚⧠45) thenset the lockText of me to falseclick at the clickLocend ifput the ticks into lastTickpass mouseUpend mouseUp</script>
  43.     </part>
  44.     <content>
  45.         <layer>card</layer>
  46.         <id>1</id>
  47.         <text>Press Tab, press Enter, or click outside the field to get back the browse tool.Add a period to the end of this line<Return> works within the field. It doesn't work like Tab or Enter.Change the text size to 12 point‚Äî(option-click with the browse tool)Try to change text size to an erroneous value!The field has to be a scrolling field.Remember to set the ‚ÄúlockText‚Äù of any new fields you create.Be sure to set the ‚ÄúDon't Wrap‚Äù attribute -- or else! :-)Command-click with the browse tool to change text characteristics.Try to double-click on a word.Hold the mouse button down on this line. Drag it around the field.The best double click technique is: single-click (pause) single-click.Shift-click near the *center* to move the field.Shift-click near the corners to resize the field.Resize too small and you'll get a beep and the field size will restore.Put lots o‚Äô lines in the field and try to drag beyond the top or the bottom edge.Scrolling works properly!Happy Scripting. Drop me a note if you like it.Douglas Parker45090 Elmhurst Ct.Utica, MI  48317-4991Freeware.</text>
  48.     </content>
  49.     <name></name>
  50.     <script></script>
  51. </card>
  52.  
  53.  
  54.